In most computer systems, a memory controller provides an interface between main memory and many of the other components of the system including the CPU. Such a memory controller typically is responsible for handling data flow to and from main memory and governs support for different types, sizes and speeds of memory devices. For many years, most memory controllers were of the single-channel variety. Recently, however, dual-channel memory controllers have risen in popularity. Dual-channel memory controllers typically support similar types, sizes and speeds of memory devices as did single-channel controllers, but dual-channel controllers increase bandwidth by adding a second data path to and from the devices.
While dual-channel controllers provide a performance benefit relative to single-channel controllers, they also impose certain limitations on memory configuration: Usually, dual-channel memory controllers require that the slots of channel A be populated identically with the slots in channel B. In other words, if a slot in channel A is populated with a dual inline memory module (“DIMM”) having certain size and speed characteristics, then the corresponding slot in channel B must be populated with a DIMM having the same size and speed characteristics as that in channel A. If not, then either the system will hang or the memory controller will default to single-channel operation. Either result deteriorates system performance.